﻿<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="utf-8">
<head>
<!--
     _   _____        _____       ___   __   _   _____  
    | | /  ___/      |_   _|     /   | |  \ | | /  ___| 
    | | | |___         | |      / /| | |   \| | | |     
 _  | | \___  \        | |     / / | | | |\   | | |  _  
| |_| |  ___| |        | |    / /  | | | | \  | | |_| | 
\_____/ /_____/        |_|   /_/   |_| |_|  \_| \_____/ 

                                  ##                #         #                                     
                             ##   ##    ##          ##       ##          ##################         
        ###   #######        ##   ##   ##                    ##          ##                         
        ###  ##     ##    ###################   ########     ##          ##   ##      ###           
         ##  ##           ##               ##        ##  ###########     ##    ###   ###            
         ##   ####        #  ############           ##       ##          ##      #####              
         ##     #####        ##        ##         ###  #     ##          ##        ###              
  #      ##         ##        ###########       ### #  ##    ##          ##      ### ###            
  ##    ###  ##     ###           ##            ##  ##       ##          ##    ###     ###          
  ###  ###   ###    ##      ###############         ##       ##          ##  ###        #           
   ######      ######             ##                ##       ###         ##                         
                          ###################       ##  #############    ################### 
http://bbs.ajaxjs.com
-->
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title></title>
    <meta name="keywords" content="繁体转简体 简体转繁体" />
    <meta name="description" content="繁体转简体 简体转繁体" />
</head>
<body>
    <p>
        <a href="#" id="StranLink">点击以繁体中文方式浏览</a>
    </p>

    <script src="Sys.big5.js"></script>

    <h1>
        连接Domain三部曲。</h1>
    <p>
        Model指的是一份XML文件，里面的某一段节点。这一段节点定义了域对象包含了哪几种字段。Model的定义是任意可设计的，依据业务对象的性质去安排。当前我们只读取input节点的定义，以别于其他无用的（相对的）HTML
        Markup。所以暂时借用了$$.vaildator表单验证器，但可以考虑在未来的版本中提供更全面的支持。该方法读取XML模型文件，获取模型。建议只读取一次，成为固定的属性，因为加载XML文件消耗资源。</p>
    <pre>
$$.bus.paging.MySQL = function(){}
$$.bus.paging.MySQL.prototype = new $$.paging();
$$.bus.paging.MySQL.prototype.getPages = function(sql){
    var _super = $$.paging.prototype.getPages;

    var resultCount;
    with(new $$.Server.DB().execute(sql.replace(/(SELECT)(.*)(FROM)/i, '$1 COUNT(*) AS totalCount $3'))){
        resultCount = fields('totalCount').value;
        Close(); 
        if(typeof resultCount != 'number')throw "类项不匹配";
    }
    return _super.call(this, resultCount);
}

$$.bus.paging.Access = function(){}
$$.bus.paging.Access.prototype = new $$.paging();
// 获取当前的页码
$$.bus.paging.Access.prototype.getCurrentPage = function(){
    if(!this.currentPage){
        this.currentPage = (eval(Request.queryString('page')() || 0));
    }
    return this.currentPage;
} 
	  </pre>
    <p>
        启动该BO的特定方法。我们采用OO的方法论来规划后台的接口，也就是确定了业务对象是那个实体，然后执行对应的业务方法即可。 上述只是一个简单的步骤，细分之下，其中必然涉及复杂的浏览，这里就大致的讲一讲。
        一般来说，每一个HTTP请求，服务端接纳后并执行的方法，就是这个方法。 每一个BO相当于是一个Action，也可以视作一个工作流的开始，就好像一个这样的流程如下：
        Action: Get HTTP post-->isSafe-->vaild-->permission-->do the job-->-->Response-->logging
        除了do the job属于具体的业务方法外，其他走的都是一般的Web提交信息的后台所执行的工序。 大体设计上，该方法的作用有以下几点： 一、在此方法中完成了居于流程中前端的Get
        HTTP POST的工作。 getMethod的作用是依据请求，分拣出应该执行那个方法，因此返回的类型是Function。 换言之，具体执行的哪个方法，访问getMethod就可以知道。从一个侧面讲，getMethod具有明显的函数变量的特点，反映了当前方法的动态性。
        this.actions是该BO的动作列表，须要传入到getMethod中，让getMethod从中选择。 getMethod()可支持经典的Web请求或者Ext.Diirect通讯模式。
        有关$$.Entity.getMethod()的详细资讯，请参阅其文档。 二、开辟this管道。虽然getMethod()返还方法，但方法链已经不能支持args.callee，
        只能除参数外选择其他方法实现信息通道，渗透控制工作流上每一个函数。好在JS有一个this管道，估计初衷是结合OO的遗留物， 现在FP的理念没想到有很好的作用。可以开辟参数以外的又一理想“寄存器”。不过推荐读取内容仍须经参数送入，写入的就可以这个this中进行，分工更加清晰。
        三、此时马上就发挥this的作用。通过call(obj)实质就是决定了工作流内部每一个方法的this指针都是指向obj参数的。 （该参数为一“匿名对象”）。考虑到某些横向的对象引用，以此方便提取信息，当前提供user、domain等的管道在内。
        该方法最终返还字符串，进而执行（在函数体外）Response.Write()输出到客户端输出内容或反馈信息。
    </p>
    <p>
        * 结论1：Select * 语句对速度影响很大。 select * from Adab 用时：35940 (共57个字段) select xhjm,xm,xjztdm,bdm,nj,dwdm
        from Adab 用时 4186 select xhjm,xm from Adab 用时1626 select xm from Adab 用时830 *可以看得出每增加一个字段，时间会增加几乎是一倍。
        * 另外，返回的数据的长度也会影响时间：如 select sfzh from Adab 用时1580 几乎与select xhjm,xm from Adab相同。
        因此，返回的数据量是影响速度最关键的因素。网络上的数据传送成了执行SQL最大的性能问题。 执行一个selec dwdm,count(xhjm) from Adab的语句，用时106
        要汇总计算，但传送数据少，因此速度很快</p>
</body>
</html>
